//
//  HomeViewController.swift
//  微博项目
//
//  Created by mac on 16/1/11.
//  Copyright © 2016年 mac. All rights reserved.
//

import UIKit
import AFNetworking
import SVProgressHUD


private let HomeCellId = "HomeCellId"
class HomeViewController: BaseTableViewController {
    
    //模型数据
    private lazy var statuses = [Status]()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        if !userLogin {
            
           visitorLoginView?.setUIWithInfo(nil, tipText: "关注一些人，回这里看看有什么惊喜")
            //一定要添加 return
            return
        }
        
        //1.准备tableView
        prepareTableView()
        //2.加载发数据
        loadData()
    }
    
    //准备tableView
    private func prepareTableView() {
        // [UItableViewCell class]
        self.tableView.registerClass(StatusCell.self, forCellReuseIdentifier: HomeCellId)
        self.tableView.rowHeight = UITableViewAutomaticDimension
//
        self.tableView.estimatedRowHeight = 300
    }
    
    //加载首页收据
    private func loadData() {
        
        //url
        let urlString = "https://api.weibo.com/2/statuses/home_timeline.json"
        //在字典添加了一个可选项
        guard let token = UserAccountViewModel().token else {
            print("用户暂未登陆")
            SVProgressHUD.showErrorWithStatus("请重写登录")
            return
        }
        let parameters = ["access_token": token]
        let AFN = AFHTTPSessionManager()
        
        AFN.GET(urlString, parameters: parameters, progress: nil, success: { (_, result) -> Void in
            //            print(result)
            //转换为字典格式
            guard let dict = result as? [String : AnyObject] else {
                SVProgressHUD.showErrorWithStatus(AppErrorTip)
                print("数据结构错误")
                return
            }
            
            guard let array = dict["statuses"] as? [[String : AnyObject]] else{
                SVProgressHUD.showErrorWithStatus(AppErrorTip)
                print("数据结构错误")
                return
            }
            
            
            //定义容器数组
            var tempArray = [Status]()
            //获取必选的 字典数组
            //便利数组 做字典转模型
            for item in array {
                let s = Status(dict: item)
                //添加元素
                tempArray.append(s)
            }
            
            //执行成功的回调
            //            finished(statuses: tempArray)
            
            self.statuses = tempArray
            self.tableView.reloadData()
            
            }) { (_, error) -> Void in
                SVProgressHUD.showErrorWithStatus(AppErrorTip)
                print(error)
        }
    }
    
}


    //在扩展中实现tableView的数据源方法
    extension HomeViewController {
        
        override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
            return self.statuses.count
        }
        
        override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
            //手写代码 必须手动注册cell
            
            let cell = tableView.dequeueReusableCellWithIdentifier(HomeCellId, forIndexPath: indexPath)as! StatusCell
            
            //显示文案
            cell.status = self.statuses[indexPath.row]
            
            return cell
        }
}
